﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>คลาสวัดเปรียบเทรียบสมรรถนะ (Benchmarking Class) : คู่มือการใช้งาน CodeIgniter</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='CodeIgniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">หน้าตารางเนื้อหา</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.in.th/">CodeIgniter.in.th </a> &nbsp;&#8250;&nbsp;
<a href="../index.html">หน้าหลักคู่มือการใช้งาน</a> &nbsp;&#8250;&nbsp;
คลาสวัดเปรียบเทรียบสมรรถนะ (Benchmarking Class)
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />ค้นหาคู่มือการใช้งาน&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="ค้นหา" />
</form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>คลาสวัดสมรรถนะ (Benchmarking Class)</h1>

<p>CodeIgniter ได้เตรียมคลาสวัดสมถรรนะไว้ให้คุณ, โดยการเปิดใช้งาน เพื่อจับระยะเวลาของตำแหน่งสองตำแหน่งและนำมาคำนวณเวลาที่ต่างกัน.</p>

<p class="important"><strong>ข้อสังเกตุ:</strong> class นี้ถูกทำงานโดยอัตโนมัติ โดยคุณไม่ต้องเปิดใช้งานเอง.</p>


<p>ส่วนเพิ่มเติม, การวัดสมรรถนะจะเริ่มทำงานตลอดเวลาทุกครั้งที่เฟรมเวิร์คมีการเรียกใช้งาน, และจบที่คลาส output  เพื่อแสดงผลสุดท้ายให้ view นำไปแสดงในเว็บเบราเซอร์, 
เป็นวิธีการที่ทำให้ได้ระยะเวลาในการทำงานของระบบที่แม่นยำมาก.</p>


<h3>ตารางเนื้อหา</h3>

<ul>
<li><a href="#using">การใช้งาน Benchmark Class</a></li>
<li><a href="#profiler">กำหนดกระบวนการ Benchmark ของคุณ</a></li>
<li><a href="#execution">แสดงผลของระยะเวลาการทำคำสั่ง</a></li>
<li><a href="#memory">แสดงผลการใช้ทรัพยากรเมมโมรี่ (Memory Consumption)</a></li>
</ul>



<a name="using"></a>
<h2>การใช้งานคลาสวัดสมรรถนะ</h2>

<p>Benchmark class สามารถใช้ได้ใน <a href="../general/controllers.html">ตัวควบคุม(controllers)</a>,  <a href="../general/views.html">ส่วนแสดง(views)</a>, หรือใน <a href="../general/models.html">แบบจำลอง(Models)</a> ของคุณ.  โดยมีวิธีการใช้ดังนี้:</p>

<ol>
<li>กำหนดตำแหน่งเริ่มต้นทำงาน</li>
<li>กำหนดตำแหน่งสิ้นสุดการทำงาน</li>
<li>ใช้ฟังก์ชั่น "elapsed time" เพื่อแสดงผลลัพธ์ที่ได้</li>
</ol>

<p>นี่คือตัวอย่างการใช้งานจริง:</p>

<code>$this->benchmark->mark('code_start');<br />
<br />
// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ<br />
<br />
$this->benchmark->mark('code_end');<br />
<br />
echo $this->benchmark->elapsed_time('code_start', 'code_end');</code>

<p class="important"><strong>ข้อสังเกตุ:</strong> คำว่า "code_start" และ "code_end" ไม่ใช่คำที่จำเป็นต้องใช้.  เหล่านี้เป็นคำตัวอย่างง่ายๆ 
ให้คุณเห็นการสร้างตำแหน่งทั้งสองจุด. คุณสามารถใช้คำใดๆ ก็ได้ตามที่คุณต้องการ, และคุณสามารถกำหนดให้ใช้งานได้หลายๆ ตำแหน่ง. ตามตัวอย่างนี้:</p>

<code>$this->benchmark->mark('dog');<br />
<br />
// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ<br />
<br />
$this->benchmark->mark('cat');<br />
<br />
// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ<br />
<br />
$this->benchmark->mark('bird');<br />
<br />
echo $this->benchmark->elapsed_time('dog', 'cat');<br />
echo $this->benchmark->elapsed_time('cat', 'bird');<br />
echo $this->benchmark->elapsed_time('dog', 'bird');</code>


<a name="profiler"></a>
<h2>กำหนดกระบวนการวัดสมถรรนะของคุณ</h2>

<p>ถ้าคุณต้องการกำหนดช่วงข้อมูลการ benchmark ของคุณ ให้คุณลองใช้งานในรูปแบบของ  
<a href="../general/profiling.html">ตัวรวมข้อมูล(Profiler)</a> เพื่อกำหนดตำแหน่งทั้งหมดเป็นคู่ๆ , และทำการกำหนดต่อท้ายชื่อด้วยคำว่า <kbd>_start</kbd> และ <kbd>_end</kbd>.
ให้เป็นคู่ของตำแหน่งนั้นๆ ตัวอย่างเช่น:</p>

<code>
$this->benchmark->mark('my_mark<kbd>_start</kbd>');<br />
<br />
// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ<br />
<br />
$this->benchmark->mark('my_mark<kbd>_end</kbd>');
<br /><br />

$this->benchmark->mark('another_mark<kbd>_start</kbd>');<br />
<br />
// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ<br />
<br />
$this->benchmark->mark('another_mark<kbd>_end</kbd>');
</code>

<p>โปรดอ่านในหน้า <a href="../general/profiling.html">Profiler</a> เพื่อดูข้อมูลเพิ่มเติม.</p>


<a name="execution"></a>
<h2>แสดงผลของระยะเวลาการทำคำสั่ง</h2>

<p>ถ้าคุณต้องการแสดงผลของเวลาที่ได้ทำงานผ่านมาแล้ว (elapsed time) จาก CodeIgniter ในขณะนั้น ไปจนถึงการแสดงผลลัพธ์ครั้งสุดท้ายที่เบราเซอร์, 
วิธีง่ายๆ ในการนำไปแสดงในโครงสร้างของ view (view template) คือ:</p>

<code>&lt;?php echo $this->benchmark->elapsed_time();?&gt;</code>

<p>คุณจะสังเกตุได้ว่ามันเหมือนกับฟังก์ชั่นที่เคยได้ยกตัวอย่างไปข้างต้น ที่นะมาคำนวณระยะเวลาของตำแหน่งสองตำแหน่ง, 
เพียงแต่คุณจะ
<strong>ไม่ใช้</strong> parameters ใดๆ.  เมื่อใดที่คุณไม่ระบุ parameters, CodeIgniter จะไม่หยุดทำการ benchmark 
จนกว่าจะสิ้นสุดการทำงาน และนำไปแสดงผลลัพธ์ที่จะส่งให้เว็บเบราเซอร์.  
หมายความว่าจะมีการคำนวณระยะเวลาทั้งหมด โดยไม่เจาะจงแค่บางคำสั่ง</p>

<p>อีกทางหนึ่งคุณสามารถแสดง elapsed time ของคุณใน view โดยการใช้ pseudo-variable, ถ้าคุณไม่ได้เขียนโค๊ดแบบ PHP ปกติ:</p>
<code>{elapsed_time}</code>

<p class="important"><strong>ข้อสังเกตุ:</strong>ถ้าคุณต้องการวัดสมรรถนะ ฟังก์ชั่นต่างๆ ใน  controller ของคุณ
คุณต้องระบุ ตำแหน่งเริ่มต้น/ตำแหน่งสิ้นสุด ด้วย.</p>

<a name="memory"></a>
<h2>แสดงผลการใช้ทรัพยากรเมมโมรี่ (Memory Consumption)</h2>

<p>ถ้า PHP ของคุณ ได้ติดตั้งผ่านการคอนฟิก (config) ด้วย --enable-memory-limit, คุณสามารถแสดงผลการใช้ทรัพยากรเมมโมรี่ (Memory Consumption) 
ว่าถูกระบบใช้งานไปกับคำสั่งเหล่านั้นไปเท่าไร โดยการระบุคำสั่งด้านล่างในไฟล์ view ดังนี้:</p>

<code>&lt;?php echo $this->benchmark->memory_usage();?&gt;</code>
<p>ข้อสังเกตุ: ฟังก์ชั่นนี้ใช้ได้ในไฟล์ view เท่านั้น. แสดงผลการใช้ทรัพยากรจะสะท้อนถึงการใช้งานเมมโมรี่ทั้งหมดในระบบ.</p>

<p>อีกทางหนึ่งคุณสามารถแสดงผลการใช้ทรัพยากรเมมโมรี่ ของคุณใน view โดยการใช้ pseudo-variable, ถ้าคุณไม่ได้เขียนโค๊ดแบบ PHP ปกติ:</p>
<code>{memory_usage}</code>




</div>
<!-- END CONTENT -->


<div id="footer">
<p>
ย้อนกลับไปหัวข้อที่แล้ว:&nbsp;&nbsp;<a href="../general/security.html">ความปลอดภัย (Security)</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">บนสุดของหน้า</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">หน้าหลักคู่มือการใช้งาน</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;หัวข้อถัดไป:&nbsp;&nbsp;<a href="controllers.html">Controllers (ตัวควบคุม)</a></p>

<p>คู่มือการใช้งาน CodeIgniter นี้ได้ทำการคัดลอกและดัดแปลงจาก <a href="http://codeigniter.com/user_guide/">CodeIgniter User Guide</a></p><p>
<a href="http://codeigniter.com">CodeIgniter</a>
 ·  Copyright © 2006-2009  · 
<a href="http://ellislab.com/">Ellislab, Inc.</a>

</p>
</div>

</body>
</html>